iT邦幫忙

2

Rust程式語言兼具Python與C優點

  • 分享至 

  • xImage
  •  

前言

近幾年MicroSoft、Google、Amazon都大力讚揚Rust,例如【Google投百萬美元給Rust基金會】【微軟再組新團隊,欲將C#代碼改寫為Rust】【AWS大量投資Rust社群,包括開源Tokio】【Rust will go into Linux 6.1】,為什麼呢?

筆者認為Rust程式語言兼具Python與C優點,Python語言優點如下:

  1. 簡單易入門,變數不需宣告資料型別,可直接使用,因為語言創造者希望撰寫Python,就像寫英文一樣簡單直覺。可以從【Python忍者宣言】一窺究竟,在終端機內輸入python,再輸入import this,如下圖。
    https://ithelp.ithome.com.tw/upload/images/20240817/20001976PwDYB3SNSu.png

  2. 套件(Package)齊全,開發生產力超高:官方目前已註冊超過562,000個套件,不管是機器學習、數值分析、資料庫、網頁、UI、系統程式...,一應俱全,只要善用套件,就可以最簡約的程式碼完成應用系統開發。
    https://ithelp.ithome.com.tw/upload/images/20240817/200019767UUUxcIUXX.png

相對的,C語言優點如下:

  1. 具備高效能,並可精準掌控記憶體。
  2. 可編譯成二進位的執行檔或函數庫,不必像Python一樣,需將原始程式碼交付給客戶,或需等到執行時才會發現程式錯誤,因為Python屬於直譯器(Intepreter),讀一行程式碼,才解析並執行該行程式碼。

Rust特點

Rust程式語言兼具Python與C優點,並改善Python與C缺點,說明如下:

  1. 套件(Crate)也非常多,官方目前已註冊超過154,000個套件,雖然數量及完整度不及Python,但遠比C/C++來的完善。也可以參考awesome-rust的分類,各種應用非常多元。

  2. 套件管理:Python以pip指令安裝套件,Rust則以cargo指令安裝套件,pip會將套件安裝在統一的位置,例如C:\Users<使用者帳號>\anaconda3\Lib\site-packages,常會造成多個套件依賴不同版本的其他套件,造成困擾,Rust的cargo指令會將套件安裝在個別的專案內,可避免上述的錯亂狀況。
    https://ithelp.ithome.com.tw/upload/images/20240817/20001976rCsyqrDMjd.png

  3. Rust是一個編譯器,可輕易編譯成二進位的執行檔或函數庫,例如程式main.rs內容如下:

fn main(){ 
    println!("Hello Rust !!"); 
}

執行 rustc main.rs,瞬間就創建main.exe,可直接double click執行,不需原始程式碼。

  1. Rust許多語法與Python非常相似,例如迴圈、字串處理,程式撰寫都非常方便。例如Python截取部分字串,使用x[2:],而Rust採用&x[2..]。
let x: &str = "Hello, world!";
let substr : &str = &x[2..];  // 從第3個字元至最後
  1. 嚴謹的編譯檢查:以C語言開發具備高效能,並可精準掌控記憶體,但非常容易造成區段錯誤(Segmentation Fault)及記憶體洩漏(Memory leak),Rust特別針對這些問題,在編譯時進行非常嚴謹的檢查,建置程式前就可以找出潛在風險。
fn main() {
    let x: &str = "Hello, world!";
    println!("{}",&x[20..]); // x 不足20個字元
}

編譯時會出現錯誤訊息:【byte index 20 is out of bounds of Hello, world!】。

  1. 除了語言本身的優點外,Rust也導入許多設計典範(Design patterns),例如泛型(Generics)、特徵(Trait)、巨集(Macro)、閉包(Closure),可以幫我們撰寫出高品質的程式碼,例如並行處理(Concurrency)、物件導向程式設計(OOP)、函數式程式設計(Functional Programming)、特性導向程式設計(Aspect Oriented Programming, AOP)...等。

  2. 提供跨語言介面規格(Foreign Function Interface, FFI)規格,可輕易的與其他語言整合,包括C、Python、C#...。許多Python套件都改用Rust開發,同時提供多種語言呼叫,並可提升執行效能,例如Polars

開始動手吧

遵照官網安裝指引,下載並執行安裝程式即可,Rust是一個跨平臺的語言,可在Windows、Linux及Mac上安裝,官網上面有非常多的免費書籍可參閱。

工商廣告:)

Rust雖然具備諸多優點,但學習曲線陡峭,因此筆者最近剛完成【Rust 最佳入門與實戰】一書的撰寫,希望能與讀者分享Rust開發心得,內容除了Rust語言的入門、設計典範(Design patterns)外,也著重應用的探討,包括網頁、WebAssembly、桌面程式、資料庫、機器學習/深度學習、區塊鏈…等。
https://ithelp.ithome.com.tw/upload/images/20240817/20001976QxDOTVaiEa.jpg


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言